home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / cat / gemerror.i < prev    next >
Text File  |  1997-10-26  |  28KB  |  625 lines

  1. IMPLEMENTATION MODULE GEMError;
  2. (*$B+,Y+,M-,S-,R-,Z-*)
  3.  
  4. (*
  5.  * Hilfsmodul zum Abfangen und Anzeigen von Laufzeitfehlern.
  6.  * Aužerdem werden alle Fehlertextvariablen mit deutschen Texten initialisiert.
  7.  *
  8.  * 25.10.88 TT  SysInitGem / CatchRemoval-Aufruf
  9.  * 07.11.88 TT  LoaderMsg [7] verbessert
  10.  * 17.06.89 TT  Fehler GenFPErr aufgenommen
  11.  * 19.08.89 TT  Fehler CaseSelectErr und NoErr aufgenommen
  12.  * 28.09.90 TT  'bye'-Funktion besser dokumentiert
  13.  *)
  14.  
  15. IMPORT MOSGlobals;
  16. FROM Storage IMPORT ALLOCATE;
  17. FROM SystemError IMPORT OutOfMemory;
  18. FROM MOSGlobals IMPORT MemArea, BusFault, OddBusAddr, NoValidRETURN, OutOfStack;
  19. FROM SysBuffers IMPORT HdlErrorStack;
  20. (*
  21. FROM GEMEnv IMPORT GemHandle, ExitGem, CurrGemHandle, SysInitApplication;
  22. *)
  23. FROM Strings IMPORT String, Pos, Delete, Assign, Insert, Concat, Copy, Length,
  24.         Empty, Space, Append, Upper;
  25. FROM SYSTEM IMPORT ASSEMBLER, LONGWORD, WORD, ADDRESS, BYTE, ADR;
  26. FROM SysTypes IMPORT ExcDesc, ScanDesc;
  27. FROM FileBase IMPORT CloseFile, HandleError;
  28. FROM Files IMPORT File, ResetState, Close, Remove, GetStateMsg, State,
  29.                 GetFileName;
  30. FROM StrConv IMPORT CardToStr, StrToLCard, IntToStr, LHexToStr;
  31. FROM PrgCtrl IMPORT TermProcess;
  32. FROM ResCtrl IMPORT RemovalCarrier, CatchRemoval;
  33. FROM HdlError IMPORT GetErrorMsg, ReleaseCatcher, SysCatchErrors;
  34. FROM ErrBase IMPORT RtnCond, ErrResp;
  35. FROM MOSConfig IMPORT LoaderMsg, RuntimeErrMsg, FileErrMsg;
  36. FROM ShellMsg IMPORT ScanMode, ScanAddr, TextName, ErrorMsg, DefPaths,
  37.         ModPaths, Active, ScanIndex, ImpPaths, SrcPaths;
  38. FROM GEMScan IMPORT InputScan, InitChain, CallingChain;
  39. FROM MOSCtrl IMPORT ModLevel;
  40. FROM SysCtrl IMPORT ExcToScanAddr;
  41. FROM mtAlerts IMPORT Alert;
  42.  
  43. VAR strVal:BOOLEAN;
  44.  
  45. PROCEDURE prepare (VAR msg: ARRAY OF CHAR; mayCont: BOOLEAN; index: CARDINAL;
  46.                    VAR mayEdit: BOOLEAN);
  47.   BEGIN
  48.     Insert ('[1][',0,msg,strVal);
  49.     Append ('][[Quit',msg,strVal);
  50.     IF mayCont THEN
  51.       Append ('|[Cont',msg,strVal)
  52.     END;
  53.     mayEdit:= Active & (ModLevel>1) & ~Empty (CallingChain [index].modName);
  54.     IF mayEdit THEN
  55.       Append ('|[Scan',msg,strVal)
  56.     END;
  57.     Append (']',msg,strVal);
  58.   END prepare;
  59.  
  60.  
  61. (* Folgende Funktion f„ngt allgemeine Laufzeitfehler ab. *)
  62.  
  63. PROCEDURE bye(nr: INTEGER; msg: ARRAY OF CHAR; causer: ErrResp;
  64.               cont: RtnCond; VAR info: ExcDesc): BOOLEAN;
  65.   
  66.   VAR scan: ScanDesc;
  67.       msg1:ARRAY [0..133] OF CHAR; (* reicht f. 4 Zeilen *)
  68.       showAddr,
  69.       mayCont,
  70.       mayEdit: BOOLEAN;
  71.       defBut, index, button:CARDINAL;
  72.       relad:LONGCARD;
  73.       str,
  74.       mname:ARRAY [0..31] OF CHAR;
  75.   BEGIN
  76.     (* Fehlermeldung vorbereiten *)
  77.     IF Empty (msg) THEN  (* Wurde ein Text bergeben? *)
  78.       GetErrorMsg (nr,str) (* Nein, dann Standardtext verwenden *)
  79.     ELSE
  80.       Assign (msg,str,strVal)
  81.     END;
  82.     (* bei Bus- und Adrežfehlern soll auch die Zugriffsadr. angezeigt werden:*)
  83.     showAddr:= (nr=BusFault) OR (nr=OddBusAddr);
  84.     (* Scanner-Record vorbereiten: *)
  85.     ExcToScanAddr (info, scan);
  86.     (* Start-Tiefe bei Scanner-Anzeige festlegen *)
  87.     IF causer=callerCaused THEN
  88.       index:= 1
  89.     ELSE
  90.       index:= 0
  91.     END;
  92.     mayCont:= cont=mayContinue;
  93.     (*
  94.      * Nun Text fr FormAlert-Meldung bei 'InputScan' vorbereiten
  95.      *)
  96.     IF showAddr THEN
  97.       Concat (str,'| auf ',msg1,strVal);
  98.       Append (LHexToStr(info.accessAddr,0),msg1,strVal)
  99.     ELSE
  100.       Assign (str,msg1,strVal)
  101.     END;
  102.     (* Aufruferkette erstellen *)
  103.     InitChain (scan);
  104.     (* Scanner starten *)
  105.     InputScan (msg1,index);
  106.     (*
  107.      * Nun Meldung "Quit|Cont|Scan" vorbereiten und anzeigen
  108.      *)
  109.     Append ( Space (22 - INTEGER (Length (str))), msg1, strVal);
  110.     prepare (msg1, mayCont, index, mayEdit);
  111.     button := Alert (1+ORD(mayEdit)+ORD(mayCont), msg1);
  112.     (*
  113.      * Zuletzt Programm beenden, fortfhren oder Scanning des Compilers starten
  114.      *)
  115.     IF button = 2+ORD(mayCont) THEN (* Scan *)
  116.       (* f. Scanning des Compilers werden einige Vars gesetzt, damit *
  117.        * die Shell bei Programmrckkehr sofort die Aktion startet.   *)
  118.       ScanMode := TRUE;
  119.       ScanIndex:= index;
  120.       Assign (str,ErrorMsg,strVal);
  121.       TermProcess (nr)
  122.     ELSIF button = 1 THEN (* Quit *)
  123.       TermProcess (nr)
  124.     ELSE (* Cont *)
  125.       RETURN FALSE
  126.     END
  127.   END bye;
  128.  
  129.  
  130. (* Folgende Prozedur f„ngt Dateifehler ab. *)
  131.  
  132. PROCEDURE handleError0 (VAR f:File; errNo: INTEGER; scan: ScanDesc);
  133.   VAR index,retBut:CARDINAL;
  134.       mayEdit: BOOLEAN;
  135.       name: ARRAY [0..23] OF CHAR;
  136.       str: ARRAY [0..31] OF CHAR;
  137.       msg:ARRAY [0..109] OF CHAR;
  138.   BEGIN
  139.     GetStateMsg (errNo,str);
  140.     Concat ('Dateifehler:|',str,msg,strVal);
  141.     InitChain (scan);
  142.     index:= 1;
  143.     InputScan (msg,index);
  144.     Append ("|Datei: ",msg,strVal);
  145.     GetFileName (f,name);
  146.     Append (name,msg,strVal);
  147.     prepare (msg, TRUE, index, mayEdit);
  148.     retBut := Alert (2+ORD(mayEdit), msg);
  149.     IF retBut = 1 THEN
  150.       TermProcess (MOSGlobals.FileSystemErr)
  151.     ELSIF retBut = 3 THEN
  152.       ScanMode := TRUE;
  153.       ScanIndex:= index;
  154.       Assign (str,ErrorMsg,strVal);
  155.       TermProcess (MOSGlobals.FileSystemErr)
  156.     ELSE
  157.       ResetState (f)
  158.     END
  159.   END handleError0;
  160.  
  161.  
  162. (* Folgende Prozedur zeigt bei Prozežende offen gebliebene Dateien an. *)
  163.  
  164. PROCEDURE closeFile0 (f: File; new:BOOLEAN);
  165.   VAR res: INTEGER;
  166.       retBut:CARDINAL;
  167.       msg1,msg: ARRAY [0..99] OF CHAR;
  168.       name: ARRAY [0..23] OF CHAR;
  169.       ch: CHAR;
  170.       strVal:BOOLEAN;
  171.   BEGIN
  172.     GetFileName (f,name);
  173.     Concat ('Datei ',name,msg,strVal);
  174.     Append ('|wurde nicht geschlossen.',msg,strVal);
  175.     IF new THEN
  176.       msg1 := '[1][][[Schliežen|[L”schen]';
  177.     ELSE
  178.       msg1 := '[1][][[Schliežen]';
  179.     END;
  180.     Insert (msg,4,msg1,strVal);
  181.     retBut := Alert (1,msg1);
  182.     IF retBut=1 THEN
  183.       Close (f);
  184.       res:= State (f);
  185.       IF res<0 THEN
  186.         GetStateMsg (res,msg);
  187.         Insert ("[1][Fehler beim Schliežen:|",0,msg,strVal);
  188.         Append ("][ [OK ]",msg,strVal);
  189.         retBut := Alert (1,msg)
  190.       END
  191.     ELSE
  192.       Remove (f)
  193.     END
  194.   END closeFile0;
  195.  
  196.  
  197. (* Folgende Prozedur dient als Datenfeld mit allen Dateifehlertexten. *)
  198.  
  199. PROCEDURE fileMessages;
  200.   (*$L- : keinen Eingangscode erzeugen. *)
  201.   BEGIN
  202.     ASSEMBLER
  203. (* deutsche Meldungen: *)
  204.         DC.W    32767  ; default fr undefinierte positive Fehlernummern:
  205.                         ACZ 'Undefinierte Warnung: @'  ASC '        '
  206.         DC.W    MOSGlobals.fNotDeleted
  207.                         ACZ 'Datei war nicht vorhanden'  ASC '      '
  208.         DC.W    MOSGlobals.fWasNotOpen
  209.                         ACZ 'Datei war nicht ge”ffnet'  ASC '       '
  210.         DC.W    MOSGlobals.fEOF
  211.                         ACZ 'Dateiende erreicht'  ASC '             '
  212.         DC.W    MOSGlobals.fEOL
  213.                         ACZ 'Zeilenende erreicht'  ASC '            '
  214.         DC.W    MOSGlobals.fOK
  215.                         ACZ 'Kein Fehler'  ASC '                    '
  216.         DC.W    MOSGlobals.fError
  217.                         ACZ 'Allgemeiner Fehler'  ASC '             '
  218.         DC.W    MOSGlobals.fDriveNotReady
  219.                         ACZ 'Laufwerk nicht ansprechbar'  ASC '     '
  220.         DC.W    MOSGlobals.fUnknownCmd
  221.                         ACZ 'Unbekannte Funktion'  ASC '            '
  222.         DC.W    MOSGlobals.fCRCError
  223.                         ACZ 'Prfsummenfehler'  ASC '               '
  224.         DC.W    MOSGlobals.fBadRequest
  225.                         ACZ 'Unerlaubte Funktion'  ASC '            '
  226.         DC.W    MOSGlobals.fSeekError
  227.                         ACZ 'Disk defekt'  ASC '                    '
  228.         DC.W    MOSGlobals.fUnknownMedia
  229.                         ACZ 'Unbekanntes Disk-Format'  ASC '        '
  230.         DC.W    MOSGlobals.fSectorNotFound
  231.                         ACZ 'Sektor nicht vorhanden'  ASC '         '
  232.         DC.W    MOSGlobals.fNoPaper
  233.                         ACZ 'Drucker: Papierende'  ASC '            '
  234.         DC.W    MOSGlobals.fWriteFault
  235.                         ACZ 'Schreibfehler'  ASC '                  '
  236.         DC.W    MOSGlobals.fReadFault
  237.                         ACZ 'Lesefehler'  ASC '                     '
  238.         DC.W    MOSGlobals.fGenError
  239.                         ACZ 'Allgemeiner Disk-Fehler'  ASC '        '
  240.         DC.W    MOSGlobals.fWriteProtected
  241.                         ACZ 'Disk ist schreibgeschtzt'  ASC '      '
  242.         DC.W    MOSGlobals.fMediaChanged
  243.                         ACZ 'Disk wurde gewechselt'  ASC '          '
  244.         DC.W    MOSGlobals.fUnknownDevice
  245.                         ACZ 'Unbekanntes Ger„t o. Laufwerk'  ASC '  '
  246.         DC.W    MOSGlobals.fBadSectorsOnFormat
  247.                         ACZ 'Fehlerhafte Sektoren'  ASC '           '
  248.         DC.W    MOSGlobals.fInsertOtherDisk
  249.                         ACZ 'Disk wechseln (A<->B)'  ASC '          '
  250.         DC.W    MOSGlobals.fInvalidFunctionNr
  251.                         ACZ 'Unerlaubte Funktionsnummer'  ASC '     '
  252.         DC.W    MOSGlobals.fFileNotFound
  253.                         ACZ 'Datei existiert nicht'  ASC '          '
  254.         DC.W    MOSGlobals.fPathNotFound
  255.                         ACZ 'Directory existiert nicht'  ASC '      '
  256.         DC.W    MOSGlobals.fTooManyOpen
  257.                         ACZ 'Zu viele Dateien offen'  ASC '         '
  258.         DC.W    MOSGlobals.fAccessDenied
  259.                         ACZ 'Zugriff verwehrt'  ASC '               '
  260.         DC.W    MOSGlobals.fInvalidHandle
  261.                         ACZ 'Unerlaubte Zugriffskennung'  ASC '     '
  262.         DC.W    MOSGlobals.fInsufficientMemory
  263.                         ACZ 'Zu wenig Speicher'  ASC '              '
  264.         DC.W    MOSGlobals.fInvalidMemBlkAddr
  265.                         ACZ 'Speicherblock existiert nicht'  ASC '  '
  266.         DC.W    MOSGlobals.fInvalidDrive
  267.                         ACZ 'Unerlaubtes Laufwerk'  ASC '           '
  268.         DC.W    MOSGlobals.fDiffDrives
  269.                         ACZ 'Rename: verschiedene Laufwerke'  ASC ' '
  270.         DC.W    MOSGlobals.fNoMoreFiles
  271.                         ACZ 'Keine weiteren Dateien'  ASC '         '
  272.         DC.W    MOSGlobals.fRangeError
  273.                         ACZ 'Bereichsberschreitung'  ASC '         '
  274.         DC.W    MOSGlobals.fInternalError
  275.                         ACZ 'Interner Fehler'  ASC '                '
  276.         DC.W    MOSGlobals.fBadFormatOfPrg
  277.                         ACZ 'Programmdatei defekt'  ASC '           '
  278.         DC.W    MOSGlobals.fResizeFailure
  279.                         ACZ 'Speicherblock nicht vergr”žbar'  ASC ' '
  280.         DC.W    MOSGlobals.fOutOfMem
  281.                         ACZ 'Zu wenig Speicher'  ASC '              '
  282.         DC.W    MOSGlobals.fFileExists
  283.                         ACZ 'Datei existiert schon'  ASC '          '
  284.         DC.W    MOSGlobals.fNoReadAllowed
  285.                         ACZ 'Lesezugriff nicht erlaubt'  ASC '      '
  286.         DC.W    MOSGlobals.fFileNotClosed
  287.                         ACZ 'Datei noch offen'  ASC '               '
  288.         DC.W    MOSGlobals.fFileNotOpen
  289.                         ACZ 'Datei nicht offen'  ASC '              '
  290.         DC.W    MOSGlobals.fInternalErr1
  291.                         ACZ 'Interner Fehler (Pos>Length)'  ASC '   '
  292.         DC.W    MOSGlobals.fInternalErr2
  293.                         ACZ 'Interner Fehler (2)'  ASC '            '
  294.         DC.W    MOSGlobals.fBadOp
  295.                         ACZ 'Zugriff in falschem Modus'  ASC '      '
  296.         DC.W    MOSGlobals.fBadAccess
  297.                         ACZ 'Zugriff nicht erlaubt'  ASC '          '
  298.         DC.W    MOSGlobals.fEndOfFile
  299.                         ACZ 'Dateiende berschritten'  ASC '        '
  300.         DC.W    MOSGlobals.fDoubleUndo
  301.                         ACZ "Wiederholter 'UndoRead'-Aufruf"  ASC ' '
  302.         DC.W    MOSGlobals.fNameTooLarge
  303.                         ACZ 'Dateiname zu lang'  ASC '              '
  304.         DC.W    MOSGlobals.fDiskFull
  305.                         ACZ 'Disk ist voll'  ASC '                  '
  306.         DC.W    MOSGlobals.fIllegalCall
  307.                         ACZ 'Unerlaubter Funktionsaufruf'  ASC '    '
  308.         DC.W    -32768 ; default fr undefinierte negative Fehlernummern:
  309.                         ACZ 'Undefinierter Fehler: @'  ASC '        '
  310.  
  311. (* english messages:
  312.         DC.W    32767  ; default fr undefinierte positive Fehlernummern:
  313.                         ACZ 'Undefined warning: @'  ASC '           '
  314.         DC.W    MOSGlobals.fNotDeleted
  315.                         ACZ 'File did not exist'  ASC '             '
  316.         DC.W    MOSGlobals.fWasNotOpen
  317.                         ACZ 'File wasn't open'  ASC '               '
  318.         DC.W    MOSGlobals.fEOF
  319.                         ACZ 'End of file'  ASC '                    '
  320.         DC.W    MOSGlobals.fEOL
  321.                         ACZ 'End of line'  ASC '                    '
  322.         DC.W    MOSGlobals.fOK
  323.                         ACZ 'No error'  ASC '                       '
  324.         DC.W    MOSGlobals.fError
  325.                         ACZ 'General error'  ASC '                  '
  326.         DC.W    MOSGlobals.fDriveNotReady
  327.                         ACZ 'Drive not ready'  ASC '                '
  328.         DC.W    MOSGlobals.fUnknownCmd
  329.                         ACZ 'Unknown command'  ASC '                '
  330.         DC.W    MOSGlobals.fCRCError
  331.                         ACZ 'CRC error'  ASC '                      '
  332.         DC.W    MOSGlobals.fBadRequest
  333.                         ACZ 'Bad request'  ASC '                    '
  334.         DC.W    MOSGlobals.fSeekError
  335.                         ACZ 'Seek error'  ASC '                     '
  336.         DC.W    MOSGlobals.fUnknownMedia
  337.                         ACZ 'Unknown media'  ASC '                  '
  338.         DC.W    MOSGlobals.fSectorNotFound
  339.                         ACZ 'Sector not found'  ASC '               '
  340.         DC.W    MOSGlobals.fNoPaper
  341.                         ACZ 'Out of paper'  ASC '                   '
  342.         DC.W    MOSGlobals.fWriteFault
  343.                         ACZ 'Write fault'  ASC '                    '
  344.         DC.W    MOSGlobals.fReadFault
  345.                         ACZ 'Read fault'  ASC '                     '
  346.         DC.W    MOSGlobals.fGenError
  347.                         ACZ 'General disk error'  ASC '             '
  348.         DC.W    MOSGlobals.fWriteProtected
  349.                         ACZ 'Disk is write-protected'  ASC '        '
  350.         DC.W    MOSGlobals.fMediaChanged
  351.                         ACZ 'Media change detected'  ASC '          '
  352.         DC.W    MOSGlobals.fUnknownDevice
  353.                         ACZ 'Unknown device'  ASC '                 '
  354.         DC.W    MOSGlobals.fBadSectorsOnFormat
  355.                         ACZ 'Bad sectors on format'  ASC '          '
  356.         DC.W    MOSGlobals.fInsertOtherDisk
  357.                         ACZ 'Insert other disk'  ASC '              '
  358.         DC.W    MOSGlobals.fInvalidFunctionNr
  359.                         ACZ 'Invalid function number'  ASC '        '
  360.         DC.W    MOSGlobals.fFileNotFound
  361.                         ACZ 'File not found'  ASC '                 '
  362.         DC.W    MOSGlobals.fPathNotFound
  363.                         ACZ 'Path not found'  ASC '                 '
  364.         DC.W    MOSGlobals.fTooManyOpen
  365.                         ACZ 'Handle pool exhausted'  ASC '          '
  366.         DC.W    MOSGlobals.fAccessDenied
  367.                         ACZ 'Access denied'  ASC '                  '
  368.         DC.W    MOSGlobals.fInvalidHandle
  369.                         ACZ 'Invalid handle'  ASC '                 '
  370.         DC.W    MOSGlobals.fInsufficientMemory
  371.                         ACZ 'Insufficient memory'  ASC '            '
  372.         DC.W    MOSGlobals.fInvalidMemBlkAddr
  373.                         ACZ 'Invalid memory block address'  ASC '   '
  374.         DC.W    MOSGlobals.fInvalidDrive
  375.                         ACZ 'Invalid drive specification'  ASC '    '
  376.         DC.W    MOSGlobals.fDiffDrives
  377.                         ACZ 'Rename: different drives spec.'  ASC ' '
  378.         DC.W    MOSGlobals.fNoMoreFiles
  379.                         ACZ 'No more files'  ASC '                  '
  380.         DC.W    MOSGlobals.fRangeError
  381.                         ACZ 'Range error'  ASC '                    '
  382.         DC.W    MOSGlobals.fInternalError
  383.                         ACZ 'GEMDOS internal error'  ASC '          '
  384.         DC.W    MOSGlobals.fBadFormatOfPrg
  385.                         ACZ 'Invalid executable file format'  ASC ' '
  386.         DC.W    MOSGlobals.fResizeFailure
  387.                         ACZ 'Memory block growth failure'  ASC '    '
  388.         DC.W    MOSGlobals.fOutOfMem
  389.                         ACZ 'Insufficient memory'  ASC '            '
  390.         DC.W    MOSGlobals.fFileExists
  391.                         ACZ 'File exists'  ASC '                    '
  392.         DC.W    MOSGlobals.fNoReadAllowed
  393.                         ACZ 'Read access not allowed'  ASC '        '
  394.         DC.W    MOSGlobals.fFileNotClosed
  395.                         ACZ 'File not closed'  ASC '                '
  396.         DC.W    MOSGlobals.fFileNotOpen
  397.                         ACZ 'File not opened'  ASC '                '
  398.         DC.W    MOSGlobals.fInternalErr1
  399.                         ACZ 'Internal error (Pos>Length)'  ASC '    '
  400.         DC.W    MOSGlobals.fInternalErr2
  401.                         ACZ 'Internal error (2)'  ASC '             '
  402.         DC.W    MOSGlobals.fBadOp
  403.                         ACZ 'Bad access mode'  ASC '                '
  404.         DC.W    MOSGlobals.fBadAccess
  405.                         ACZ 'Read or write not allowed here'  ASC ' '
  406.         DC.W    MOSGlobals.fEndOfFile
  407.                         ACZ 'End of file reached'  ASC '            '
  408.         DC.W    MOSGlobals.fDoubleUndo
  409.                         ACZ "Repeated 'UndoRead' call"  ASC '       '
  410.         DC.W    MOSGlobals.fNameTooLarge
  411.                         ACZ 'File name too long'  ASC '             '
  412.         DC.W    MOSGlobals.fDiskFull
  413.                         ACZ 'Disk full'  ASC '                      '
  414.         DC.W    MOSGlobals.fIllegalCall
  415.                         ACZ 'Illegal function call'  ASC '          '
  416.         DC.W    -32768 ; default fr undefinierte negative Fehlernummern:
  417.                         ACZ 'Undefined error: @'  ASC '             '
  418. *)
  419.         DC.W  0,0       ; Endekennzeichnung fr die Liste
  420.     END
  421.   END fileMessages;
  422.   (*$L=*)
  423.  
  424. (* Folgende Prozedur dient als Datenfeld mit allen Laufzeitfehlertexten. *)
  425.  
  426. PROCEDURE errMessages;
  427.   (*$L- : keinen Eingangscode erzeugen. *)
  428.   BEGIN
  429.     ASSEMBLER
  430.         DC.W  -32768  ; default fr undefinierte Fehlernummern:
  431.                         ACZ 'Undefinierter Fehler: @'  ASC '        '
  432.  
  433.         DC.W    MOSGlobals.NoErr
  434.                         ACZ 'Kein Fehler'  ASC '                    '
  435.         DC.W    MOSGlobals.GeneralErr
  436.                         ACZ 'Genereller Fehler'  ASC '              '
  437.         DC.W    MOSGlobals.BusFault
  438.                         ACZ 'Adresse nicht ansprechbar'  ASC '      '
  439.         DC.W    MOSGlobals.OddBusAddr
  440.                         ACZ 'Zugriff auf ungerade Adresse'  ASC '   '
  441.         DC.W    MOSGlobals.IllegalInstr
  442.                         ACZ 'Unbekannte Maschinenanweisung'  ASC '  '
  443.         DC.W    MOSGlobals.DivByZero
  444.                         ACZ 'Division durch Null'  ASC '            '
  445.         DC.W    MOSGlobals.OutOfRange
  446.                         ACZ 'Bereichsberschreitung'  ASC '         '
  447.         DC.W    MOSGlobals.Overflow
  448.                         ACZ 'šberlauf'  ASC '                       '
  449.         DC.W    MOSGlobals.StringOverflow
  450.                         ACZ 'String-šberlauf'  ASC '                '
  451.         DC.W    MOSGlobals.NoValidRETURN
  452.                         ACZ 'Fehlende RETURN-Anweisung'  ASC '      '
  453.         DC.W    MOSGlobals.OutOfStack
  454.                         ACZ 'Stackberlauf'  ASC '                  '
  455.         DC.W    MOSGlobals.HALTInstr
  456.                         ACZ 'HALT - Anweisung'  ASC '               '
  457.         DC.W    MOSGlobals.FileSystemErr
  458.                         ACZ 'Fehler im Dateisystem'  ASC '          '
  459.         DC.W    MOSGlobals.OutOfMemory
  460.                         ACZ 'Ungengend freier Speicher'  ASC '     '
  461.         DC.W    MOSGlobals.IllegalCall
  462.                         ACZ 'Unerlaubter Funktionsaufruf'  ASC '    '
  463.         DC.W    MOSGlobals.CoroutineRtn
  464.                         ACZ 'Rckkehr aus Coroutine'  ASC '         '
  465.         DC.W    MOSGlobals.InternalFault
  466.                         ACZ 'Interner Fehler'  ASC '                '
  467.         DC.W    MOSGlobals.IllegalProcVar
  468.                         ACZ 'Undefinierte PROCEDURE-Var.'  ASC '    '
  469.         DC.W    MOSGlobals.IllegalPointer
  470.                         ACZ 'Uninitialisierte POINTER-Var.'  ASC '  '
  471.         DC.W    MOSGlobals.UserBreak
  472.                         ACZ 'Abbruch durch den Anwender'  ASC '     '
  473.         DC.W    MOSGlobals.IllegalState
  474.                         ACZ 'Interner Statusfehler'  ASC '          '
  475.         DC.W    MOSGlobals.Exception
  476.                         ACZ 'Diverse Exception'  ASC '              '
  477.         DC.W    MOSGlobals.GenFPErr
  478.                         ACZ 'Div. Floating-Point Fehler'  ASC '     '
  479.         DC.W    MOSGlobals.CaseSelectErr
  480.                         ACZ 'Unerfllte CASE-Anweisung'  ASC '      '
  481.         DC.W    MOSGlobals.ConfigErr
  482.                         ACZ 'Fataler Konfigurationsfehler'  ASC '   '
  483.         DC.W    MOSGlobals.IllegalClosure
  484.                         ACZ 'Zuweisung lokaler Prozedur'  ASC '     '
  485.         DC.W    MOSGlobals.GemErr
  486.                         ACZ 'Fehler bei letztem GEM-Aufruf'  ASC '  '
  487.  
  488. (*  English (?) error messages:
  489.         DC.W  -32768  ; default fr undefinierte Fehlernummern:
  490.                         ACZ 'Undefined error: @'  ASC '             '
  491.         DC.W  MOSGlobals.NoErr
  492.                         ACZ 'No error'  ASC '                       '
  493.         DC.W  MOSGlobals.GeneralErr
  494.                         ACZ 'General error'  ASC '                  '
  495.         DC.W  MOSGlobals.BusFault
  496.                         ACZ 'Bus error'  ASC '                      '
  497.         DC.W  MOSGlobals.OddBusAddr
  498.                         ACZ 'Address error'  ASC '                  '
  499.         DC.W  MOSGlobals.IllegalInstr
  500.                         ACZ 'Illegal instruction'  ASC '            '
  501.         DC.W  MOSGlobals.DivByZero
  502.                         ACZ 'Division by zero'  ASC '               '
  503.         DC.W  MOSGlobals.OutOfRange
  504.                         ACZ 'Out of range'  ASC '                   '
  505.         DC.W  MOSGlobals.Overflow
  506.                         ACZ 'Overflow'  ASC '                       '
  507.         DC.W  MOSGlobals.StringOverflow
  508.                         ACZ 'String overflow'  ASC '                '
  509.         DC.W  MOSGlobals.NoValidRETURN
  510.                         ACZ 'No valid RETURN from function'  ASC '  '
  511.         DC.W  MOSGlobals.OutOfStack
  512.                         ACZ 'Out of stack space'  ASC '             '
  513.         DC.W  MOSGlobals.HALTInstr
  514.                         ACZ 'HALT encountered'  ASC '               '
  515.         DC.W  MOSGlobals.FileSystemErr
  516.                         ACZ 'Error in file system'  ASC '           '
  517.         DC.W  MOSGlobals.OutOfMemory
  518.                         ACZ 'Out of memory'  ASC '                  '
  519.         DC.W  MOSGlobals.IllegalCall
  520.                         ACZ 'Illegal function call'  ASC '          '
  521.         DC.W  MOSGlobals.CoroutineRtn
  522.                         ACZ 'Return from coroutine'  ASC '          '
  523.         DC.W  MOSGlobals.InternalFault
  524.                         ACZ 'Internal error'  ASC '                 '
  525.         DC.W  MOSGlobals.IllegalProcVar
  526.                         ACZ 'Undefined PROCEDURE variable'  ASC '   '
  527.         DC.W  MOSGlobals.IllegalPointer
  528.                         ACZ 'Undefined pointer variable'  ASC '     '
  529.         DC.W  MOSGlobals.UserBreak
  530.                         ACZ 'Interrupt by user'  ASC '              '
  531.         DC.W  MOSGlobals.IllegalState
  532.                         ACZ 'Internal state fault'  ASC '           '
  533.         DC.W  MOSGlobals.Exception
  534.                         ACZ 'Unspecified exception'  ASC '          '
  535.         DC.W  MOSGlobals.GenFPErr
  536.                         ACZ 'General Floating-Point error'  ASC '   '
  537.         DC.W  MOSGlobals.CaseSelectErr
  538.                         ACZ 'CASE selection error'  ASC '           '
  539.         DC.W  MOSGlobals.ConfigErr
  540.                         ACZ 'Fatal configuration error'  ASC '      '
  541.         DC.W  MOSGlobals.IllegalClosure
  542.                         ACZ 'Assignment of local procedure'  ASC '  '
  543.         DC.W  MOSGlobals.GemErr
  544.                         ACZ 'Error at last GEM-call'  ASC '         '
  545. *)
  546.  
  547.         DC.W  0,0       ; Endekennzeichnung fr die Liste
  548.     END
  549.   END errMessages;
  550.   (*$L=*)
  551.  
  552. VAR stck: MemArea;
  553.     rHdl: RemovalCarrier;
  554.     ok: BOOLEAN;
  555. (*
  556.     gemHdl: GemHandle;
  557.  
  558. PROCEDURE freeSys;
  559.   BEGIN
  560.     ExitGem (gemHdl);
  561.     ReleaseCatcher (bye)
  562.   END freeSys;
  563. *)
  564. BEGIN
  565.   (*
  566.   SysInitApplication (ok);
  567.   gemHdl:= CurrGemHandle ();
  568.   CatchRemoval (rHdl, freeSys, stck);
  569.   *)
  570.  
  571.   (* Abfangen aller Fehlermeldungen: *)
  572.   stck.bottom := ADR (HdlErrorStack);
  573.   stck.length := SIZE (HdlErrorStack);
  574.   IF ~SysCatchErrors (bye,stck) THEN OutOfMemory END;
  575.   CloseFile:= closeFile0;
  576.   HandleError:= handleError0;
  577.   FileErrMsg:= ADDRESS (fileMessages);
  578.   RuntimeErrMsg:= ADDRESS (errMessages);
  579.   
  580.   NEW (LoaderMsg);
  581.   IF LoaderMsg = NIL THEN OutOfMemory END;
  582.   
  583.   (* Fehlertexte des Moduls 'Loader' in Englisch:
  584.   LoaderMsg^[0]:=  "Can't find @I";
  585.   LoaderMsg^[1]:=  'Importing @I into @C: file not found';
  586.   LoaderMsg^[2]:=  'File @I is physically damaged';
  587.   LoaderMsg^[3]:=  'Illegal data in @I';
  588.   LoaderMsg^[4]:=  'Bad layout of @I';
  589.   LoaderMsg^[5]:=  'Conflict of versions between @I and @C';
  590.   LoaderMsg^[6]:=  'Out of memory';
  591.   LoaderMsg^[7]:=  '@I is resident'; (* linked / schon initialisiert *)
  592.   LoaderMsg^[8]:=  'Illegal module name';
  593.   LoaderMsg^[9]:=  'Nesting of module calls too deep';
  594.   LoaderMsg^[10]:= 'Program can't be executed';
  595.   LoaderMsg^[11]:= 'Program not found';
  596.   LoaderMsg^[12]:= 'Initialization of environment failed';
  597.   LoaderMsg^[13]:= 'De-initialization of environment failed';
  598.   LoaderMsg^[14]:= '"@I" is compressed';
  599.   LoaderMsg^[15]:= '"@I" has wrong real format';
  600.   LoaderMsg^[16]:= '"@I": FPU not available';
  601.   LoaderMsg^[17]:= 'Too many modules to initialize';
  602.   *)
  603.   
  604.   (* Fehlertexte des Moduls 'Loader' in Deutsch: *)
  605.   LoaderMsg^[0]:=  '"@I" nicht vorhanden';
  606.   LoaderMsg^[1]:=  '"@I" beim Importieren in "@C" nicht gefunden';
  607.   LoaderMsg^[2]:=  '"@I" ist defekt';
  608.   LoaderMsg^[3]:=  'Unerlaubte Daten in "@I"';
  609.   LoaderMsg^[4]:=  'Unerlaubtes Layout von "@I"';
  610.   LoaderMsg^[5]:=  'Versionskonflikt zwischen "@I" und "@C"';
  611.   LoaderMsg^[6]:=  'Kein ausreichender Speicherplatz mehr';
  612.   LoaderMsg^[7]:=  '"@I" ist resident und schon initialisiert';
  613.   LoaderMsg^[8]:=  'Unerlaubter Modulname';
  614.   LoaderMsg^[9]:=  'Zu viele verschachtelte Modulaufrufe';
  615.   LoaderMsg^[10]:= 'Programm ist nicht ausfhrbar';
  616.   LoaderMsg^[11]:= 'Programm nicht gefunden';
  617.   LoaderMsg^[12]:= 'Laufzeitfehler w„hrend Initialisierung';
  618.   LoaderMsg^[13]:= 'Laufzeitfehler w„hrend Deinitialisierung';
  619.   LoaderMsg^[14]:= '"@I" ist komprimiert';
  620.   LoaderMsg^[15]:= '"@I" hat falsches Real-Format';
  621.   LoaderMsg^[16]:= '"@I": FPU nicht vorhanden';
  622.   LoaderMsg^[17]:= 'Zu viele Module zu initialisieren';
  623.  
  624. END GEMError.
  625.